package com.hzz.dto.analysis;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.hzz.framework.dto.AbstractBaseDto;

import lombok.Data;

/**
 * 考核结果排名统计实体
 *
 */
@Data
public class ExamineResultRankStatDto extends AbstractBaseDto {
	/**
	 * 行政区划ID（参数）
	 */
	private Long currAreaId;
	/**
	 * 起始年份（参数）
	 */
	private Integer startYear;
	/**
	 * 终止年份（参数）
	 */
	private Integer endYear;
	/**
	 * 下级行政区划名称（结果）
	 */
	private String name;
	/**
	 * 考核年份（结果）
	 */
	private Integer year;
	/**
	 * 考核年度评分（结果）
	 */
	private BigDecimal score;
	/**
	 * 排名（结果）
	 */
	private Integer rank;

	private List<Detail> details;

	/**
	 * 
	 * 考核结果明细
	 *
	 */
	@Data
	class Detail {
		/**
		 * 考核年份（结果）
		 */
		private Integer year;
		/**
		 * 考核年度评分（结果）
		 */
		private BigDecimal score;
		/**
		 * 排名（结果）
		 */
		private Integer rank;

		Detail(Integer year, BigDecimal score, Integer rank) {
			this.year = year;
			this.score = score;
			this.rank = rank;
		}
	}

	/**
	 * 追加一个年份得分
	 * 
	 * @param year
	 * @param score
	 */
	public void addDetail(Integer year, BigDecimal score, Integer rank) {
		if (details == null) {
			details = new ArrayList<>();
		}
		details.add(new Detail(year, score, rank));
	}

	/**
	 * 判断是否有对应年份数据，如果没有则添加一个0分数据
	 * 
	 * @param year
	 */
	public void addNoYearDetail(Integer year) {
		if (details == null) {
			details = new ArrayList<>();
		}
		for (Detail detail : this.details) {
			if (detail.getYear().intValue() == year) {
				return;
			}
		}
		addDetail(year, new BigDecimal("0"), 0);
	}
}
